import { getCodeList, getCodeListTree } from "@/api/common"
const constant = {
  state: {
    // 请求状态
    BM_XFZT: [
      { label: '未请求', value: '0' },
      { label: '已请求', value: '1' }
    ],
    // 发布状态是否发布:0：未发布   1：已发布，枚举GgxxFbztEnum
    BM_FBZT: [
      { label: '未发布', value: '0' },
      { label: '已发布', value: '1' },
    ],
    // 接收单位类型 <!-- 接收单位类型（表码BM_GGJSDWLX）:1：全局直属单位:2：全分局单位:3：全派出所 -->
    BM_JSDWLX: [
      { label: '全局直属单位', value: '1' },
      { label: '全分局单位', value: '2' },
      { label: '全派出所', value: '3' },
    ],
    // 信息状态
    BM_QSZT: [],
    // 信息动态评估
    BM_XXDTPG: [],
    // 紧急程度
    BM_JJCD: [],
    // 信息类别
    BM_XXLB: [],
    // 指向地点
    BM_ZXDD: [],
    // 来文单位
    BM_LWDW: [],
    // 性别
    DM_SEX: [],
    // 稳控单位，上报单位
    BM_DEPT: [],
    // 稳控类型：稳控类型：1-已稳控；2-未稳控；3-需移交；4-工作中；5-外省人；6-无法核查
    BM_WKLX: [],
    // 指令类型表码
    BM_ZLLX: [],
    // 呈批类型
    BM_CPLX: [],
    // 涉及群体
    BM_QTLB_QTXX: [],
    // 公告类型
    DM_GGXX_GGLX: [],
    // 研判状态
    BM_YPZT: [],
    // 公告接收单位类型
    BM_GGJSDWLX: [],
    // 指令状态
    BM_QSFKZT: [],
    // 反馈状态
    BM_FKZT: [],
    // 指令来源
    BM_ZLLY: [],
    // 指向类型
    BM_ZXLX: [],

    // 要素提取里面只能选一个的要素
    only_ys: ["200000", "100000"],
    // 要素类型-身份证号
    SFZH_DM: "200000",

    // 要素类型-手机号
    SJH_DM: "300000",


    // 要素类型-姓名
    XM_DM: "100000",

    // 滚动核处代码
    GDHC_DM: "03",

    // 人员状态-移交代码
    RYYJ_DM: "00"
  },
  mutations: {
    SET_CONSTANT(state, { label, value }) {
      state[label] = value
    }
  },
  actions: {
    getConstant({ state, commit }, arr) {
      return new Promise(resolve => {
        // 全部加载完毕
        Promise.race(arr.map(item => {
          return new Promise(async (resolve, reject) => {
            if (state[item].length) reject(false)
            await getCodeList(item).then(({ data }) => {
              if (item == 'BM_ZLLX' || item == 'BM_QSFKZT' ){
                data.unshift({label:"全部",value:""});
              }
              commit('SET_CONSTANT', { label: item, value: data })
            })
            resolve(true)
          })
        })).then(() => {
          resolve(true)
        }).catch((err) => {
          console.log(err)
        })
      })

    },
    getConstantTree({ state, commit }, arr) {
      return new Promise(resolve => {
        // 全部加载完毕
        Promise.race(arr.map(item => {
          return new Promise(async (resolve, reject) => {
            if (state[item].length) reject(false)
            await getCodeListTree(item).then(({ data }) => {
              commit('SET_CONSTANT', { label: item, value: data })
            })
            resolve(true)
          })
        })).then(() => {
          resolve(true)
        }).catch((err) => {
          console.log(err)
        })
      })
    }
  }
};

export default constant;
